package main

import (
	"time"
	"fmt"
)

/**

当 select 中的其他条件分支都没有准备好的时候，default 分支会被执行。

为了非阻塞的发送或者接收，可使用 default 分支：

select {
case i := <-c:
    // 使用 i
default:
    // 从 c 读取会阻塞
}
 */

func main() {
	ticker := time.Tick(200 * time.Millisecond)
	after := time.After(2000 * time.Millisecond)
	for {
		select {
		case <-ticker:
			fmt.Println("ticker running...")
		case <-after:
			fmt.Println("after running...")
			return
		default:
			fmt.Println("defalut running...")
			time.Sleep(100 * time.Millisecond)
		}
	}
}
